<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head th:replace="admin/_fragments :: head(~{::title})">
    <meta charset="UTF-8">
    <!--调整缩放，方便移动端-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>博客管理</title>

    <!--semantic ui 的 css-->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css">

    <!--自己定义的 css-->
    <link rel="stylesheet" href="../../static/css/me.css">

</head>
<body>
    <!--导航-->
    <!--
        inverted : 颜色反转，加上就是黑色
        attached : 贴附，加上导航条就没有圆角
        m-padded-tb-mini : 自定义的 css ，表示导航栏菜单的上下内间距调整小一点
        segment : 一条类似导航栏的带子
    -->
    <nav th:replace="admin/_fragments :: menu(1)" class="ui inverted segment attached m-padded-tb-mini m-shadow-small">
        <!--放在 container 里可以让四周都留点空隙-->
        <div class="ui container">
            <!--
                secondary : 相当于一个背景色的样式
                stackable : 表示可堆叠的，在移动端时，里面的元素会有序堆在一起，一般与 menu ，grid 等连用
            -->
            <div class="ui inverted secondary stackable menu">
                <!--teal : 相当于一个字体颜色，绿色-->
                <h2 class="ui teal header item">管理后台</h2>
                <!--在 ws 中可以快速写标签，例如： i.home.icon + tab键 = <i class="home icon"></i>-->
                <!--
                    item : 与上面的 menu 相对应
                    m-mobile-hide : 自定义的 css ，在移动端时隐藏
                    m-item : 没有任何样式作用，仅用于 js 作为选择器
                -->
                <a href="#" class="active m-item item m-mobile-hide"><i class="home icon"></i>博客</a>
                <a href="#" class="m-item item m-mobile-hide"><i class="idea icon"></i>分类</a>
                <a href="#" class="m-item item m-mobile-hide"><i class="tags icon"></i>标签</a>

                <div class="right m-item item m-mobile-hide menu">
                    <!--拥有下拉菜单的头像框-->
                    <!--
                        dropdown item : 代表一个下拉菜单
                    -->
                    <div class="ui dropdown item">
                        <div class="text">
                            <img class="ui avatar image" src="https://picsum.photos/id/1/100/100">名字
                        </div>
                        <i class="dropdown icon"></i>
                        <!--menu 中包含下拉菜单项-->
                        <div class="menu">
                            <a href="#" class="item">注销</a>
                        </div>
                    </div>
                </div>

            </div>
        </div>

        <!--用于移动端折叠导航栏的按钮-->
        <!--
            m-right-top : 自定义的 css，将元素至于右上角
            m-mobile-show : 自定义的 css ，在移动端时显示，在通常情况下隐藏
            menu toggle : 没有任何样式作用，仅用于 js 作为选择器
        -->
        <a href="#" class="ui black menu toggle icon button m-right-top m-mobile-show">
            <i class="sidebar icon"></i>
        </a>

    </nav>
    <div class="ui attached pointing menu">
        <div class="ui container">
            <div class="right menu">
                <a href="#" th:href="@{/admin/blogs/input}" class="item">发布</a>
                <a href="#" th:href="@{/admin/blogs}" class="teal active item">列表</a>
            </div>
        </div>
    </div>

    <!--中间内容-->
    <!--
        m-container : 自定义css，使其比原定的 container 窄
    -->
    <div class="m-container-small m-padded-tb-big">
        <div class="ui container">
            <!--搜索表单-->
            <div class="ui secondary segment form">
                <!--隐藏域，用于将分页数据和搜索条件一起传递到后端，作为分页数据的容器，下面会在 jQuery 中处理-->
                <input type="hidden" name="page">
                <div class="inline fields">
                    <div class="field">
                        <input type="text" name="title" placeholder="标题">
                    </div>
                    <div class="field">
                        <div class="ui labeled action input">
                            <!--
                                selection dropdown : 单选下拉菜单
                                type : 无样式，仅作为 js 的选择器
                            -->
                            <div class="ui type selection dropdown">
                                <!--这里的隐藏域用于传递 name 属性-->
                                <input type="hidden" name="typeId">
                                <i class="dropdown icon"></i>
                                <!--下拉框的默认显示文本-->
                                <div class="default text">分类</div>
                                <!--
                                    menu 中包含下拉菜单项
                                    data-value ： 实际传的 value 值，与上面的 name 相对应
                                -->
                                <div class="menu">
                                    <div th:each="type : ${types}" class="item" data-value="1" th:data-value="${type.id}" th:text="${type.name}">错误日志</div>
                                </div>
                            </div>
                            <button id="clear" class="ui button compact">清空</button>
                        </div>
                    </div>
                    <div class="field">
                        <!--
                            checkbox : checkbox 相应的样式，用其包裹 checkbox
                        -->
                        <div class="ui checkbox">
                            <!--
                                id : 用于绑定下面的 label ，实现点击 label 也能选中
                            -->
                            <input type="checkbox" id="recommend" name="recommend">
                            <label for="recommend">推荐</label>
                        </div>
                    </div>
                    <div class="field">
                        <button type="button" id="search-btn" class="ui mini teal basic button"><i class="search icon"></i>搜索</button>
                    </div>
                </div>
            </div>

            <!--数据表格-->
            <!--
                table : 表格的基本样式
                celled ： 加上网格线
                compact : 让行更加紧凑
                th:fragment="blogList" : 定义一个片段，当请求 /blogs/search 时，局部刷新这个区域
            -->
            <div id="table-container">
                <table th:fragment="blogList" class="ui compact teal table">
                    <thead>
                    <tr>
                        <th></th>
                        <th>标题</th>
                        <th>类型</th>
                        <th>推荐</th>
                        <th>状态</th>
                        <th>更新时间</th>
                        <th>操作</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr th:each="blog, iterStat : ${page.list}">
                        <td th:text="${iterStat.count}">1</td>
                        <td th:text="${blog.title}">刻意练习清单</td>
                        <td th:text="${blog.type.name}">认知升级</td>
                        <td th:text="${blog.recommend} ? '是' : '否'">是</td>
                        <td th:text="${blog.published} ? '发布' : '草稿'">草稿</td>
                        <td th:text="${blog.updateTime}">2017-10-12 09：45</td>
                        <td>
                            <a href="#" th:href="@{/admin/blogs/{id}/input(id=${blog.id})}" class="ui mini teal basic button">编辑</a>
                            <a href="#" th:href="@{/admin/blogs/{id}/delete(id=${blog.id})}" class="ui mini red basic button">删除</a>
                        </td>
                    </tr>
                    </tbody>
                    <tfoot>
                    <tr>
                        <!--
                            colspan="6" : 将 6 列合并成 1 列
                        -->
                        <th colspan="7">
                            <!--分页按钮-->
                            <!--
                                pagination menu : 分页按钮的基本样式
                                right floated : 靠右浮动
                            -->
                            <div class="ui mini pagination menu" th:if="${page.pages} > 1">
                                <!--
                                    onclick="page(this)" : 添加点击事件，自定义 page() 函数，将整个 a 标签的 DOM 对象传到 page()
                                    th:attr="data-page=${page.number}-1" : 自定义 page 属性，
                                        jQuery 可以通过 data("自定义属性名") 函数，获取在标签中的 data-自定义属性名 的属性值，
                                        因为属性值有动态赋值，所以要用 th:attr
                                -->
                                <a onclick="page(this)" th:attr="data-page=${page.pageNum}-1" class="  item" th:unless="${page.isFirstPage}">上一页</a>
                                <a onclick="page(this)" th:attr="data-page=${page.pageNum}+1" class=" item" th:unless="${page.isLastPage}">下一页</a>
                            </div>
                            <a href="#" th:href="@{/admin/blogs/input}" class="ui mini right floated teal basic button">新增</a>
                        </th>
                    </tr>
                    </tfoot>
                </table>

                <!--后台消息-->
                <!--
                    th:unless="${#strings.isEmpty(message)} : 当 message 不为空时就显示
                -->
                <div class="ui success message" th:unless="${#strings.isEmpty(message)}">
                    <i class="close icon"></i>
                    <div class="header">提示：</div>
                    <p th:text="${message}">恭喜，操作成功！</p>
                </div>

            </div>

        </div>


    </div>

    <br>
    <br>

    <!--底部 footer-->
    <!--
        vertical : 垂直，加上没有圆角
        m-padded-tb-massive : 自定义 css，使整个 footer 的内间距变大
    -->
    <footer th:replace="admin/_fragments :: footer" class="ui inverted vertical segment m-padded-tb-massive">
        <!--
            center aligned : 里面所有元素居中
        -->
        <div class="ui center aligned container">
            <!--
                grid : 类似于 bootstrap 中的 row，bootstrap 中 把一行分成 12 列，这里分成 16 列
                divided : 每列之间加上分割线
                inverted : 因为背景是反转色，所以这里也反转
            -->
            <div class="ui inverted divided stackable grid">
                <!--二维码图片-->
                <!--
                    wide : 宽度填满
                -->
                <div class="three wide column">
                    <!--把图片放在 list 里，使图片能居中-->
                    <div class="ui inverted link list">
                        <div class="item">
                            <!--
                                rounded : 圆角的
                            -->
                            <img src="../../static/images/QRcode.png" class="ui rounded image" style="width: 110px">
                        </div>
                    </div>
                </div>
                <!---->
                <div class="three wide column">
                    <h4 class="ui inverted header m-text-thin m-text-spaced">最新博客</h4>
                    <!--
                        list : 里面的元素呈列表样式
                    -->
                    <div class="ui inverted link list">
                        <!--
                            item : 与上面的 list 相对应
                        -->
                        <a href="#" class="item">用户故事</a>
                        <a href="#" class="item">用户故事</a>
                        <a href="#" class="item">用户故事</a>
                    </div>
                </div>
                <div class="three wide column">
                    <h4 class="ui inverted header m-text-thin m-text-spaced">联系我</h4>
                    <!--
                        list : 里面的元素呈列表样式
                    -->
                    <div class="ui inverted link list">
                        <!--
                            item : 与上面的 list 相对应
                        -->
                        <a href="#" class="item">Email: dfasdog@qq.com</a>
                        <a href="#" class="item">QQ: 13355767653</a>
                    </div>
                </div>
                <div class="seven wide column">
                    <!--加上自定义样式-->
                    <h4 class="ui inverted header m-text-thin m-text-spaced">Blog</h4>
                    <!--加上自定义样式-->
                    <p class="m-text-thin m-text-spaced m-opacity-mini">一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话一段话</p>
                </div>
            </div>
            <!--分割线-->
            <!--
                divider : 与上面的 divided 区别开
            -->
            <div class="ui inverted section divider"></div>
            <!--加上自定义样式-->
            <p class="m-text-thin m-text-spaced m-opacity-tiny">版权内容版权内容版权内容版权内容版权内容</p>
        </div>
    </footer>

<!--/*/<th:block th:replace="admin/_fragments :: script">/*/-->
<!--jquery 的 js-->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.2/dist/jquery.min.js"></script>

<!--semantic ui 的 js-->
<script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.js"></script>
<!--/*/</th:block>/*/-->

<!--自定义的 js-->
<script>

    // 顶部导航栏折叠
    $('.menu.toggle').click(function () {
        // 如果类中有 m-mobile-hide ，则去掉，否则加上
        $('.m-item').toggleClass('m-mobile-hide');
    });

    $('.ui.dropdown').dropdown({
        on: 'hover'     // 鼠标悬浮就弹出菜单
    });

    // 消息提示关闭初始化
    $('.message .close').on('click', function () {  // 当点击关闭按钮时
        $(this).closest('.message')     // 关闭
            .transition('fade');        // 指定动画
    });

    // 搜索表单分类清空按钮
    $('#clear').on('click', function () {
        $('.type.ui.dropdown').dropdown('clear');
    });

    // 将分页数据和搜索条件一起传递到后端
    function page(obj) {
        // 获取到自定义的 page 属性的值，将其设置为隐藏域的 value
        $("[name='page']").val($(obj).data("page"));
        loaddata();
    }

    // 搜索点击事件
    $('#search-btn').click(function () {
        $("[name='page']").val(0);
        loaddata();
    });

    // 表单提交后，更新表格内容
    function loaddata() {
        // load() 方法从服务器加载数据，并把返回的数据放置到指定的元素中，在后端会返回 blogList 片段，会更新 id 为 table-container 的 div
        $("#table-container").load("/admin/blogs/search", {     // 请求路径
            title: $("[name='title']").val(),                   // 请求参数，（对象）json，表单的内容
            typeId: $("[name='typeId']").val(),
            recommend: $("[name='recommend']").prop('checked'),
            page : $("[name='page']").val()
        });
    }
    

</script>
</body>
</html>